package org.example;

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.time.LocalDateTime;
/**
 * 日志记录工具类 - 负责系统操作和错误的日志记录
 */
public class LoggerUtil {
    // 日志文件路径
    private static final String OPERATION_LOG = "atm_operations.log"; // 操作日志
    private static final String ERROR_LOG = "atm_errors.log";         // 错误日志
    /**
     * 记录操作日志
     * @param accountId 账户ID（未登录时传null）
     * @param operation 操作描述
     */
    public static void logOperation(String accountId, String operation) {
        try (PrintWriter out = new PrintWriter(new FileWriter(OPERATION_LOG, true))) {
            // 日志格式：[时间] [账户] 操作详情
            String logEntry = String.format("[%s] [%s] %s",
                    LocalDateTime.now(),
                    accountId != null ? accountId : "SYSTEM",
                    operation);
            out.println(logEntry);
        } catch (IOException e) {
            System.err.println("操作日志记录失败: " + e.getMessage());
        }
    }
    /**
     * 记录错误日志
     * @param error 错误描述
     * @param e 异常对象
     */
    public static void logError(String error, Exception e) {
        try (PrintWriter out = new PrintWriter(new FileWriter(ERROR_LOG, true))) {
            // 记录错误基本信息
            out.printf("[%s] 错误: %s - %s\n",
                    LocalDateTime.now(),
                    error,
                    e.getMessage());

            // 记录完整的异常堆栈
            e.printStackTrace(out);
        } catch (IOException ex) {
            System.err.println("错误日志记录失败: " + ex.getMessage());
        }
    }
}
